//
//  HMFindViewController.swift
//  HMWeiBo
//
//  Created by Apple on 16/7/28.
//  Copyright © 2016年 itheima. All rights reserved.
//

import UIKit

class HMFindViewController: HMBaseTableViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        
        
        // Do any additional setup after loading the view.
        visitor.setupInfo("visitordiscover_image_message", message: "登录后，最新、最热微博尽在掌握，不再会与实事潮流擦肩而过",isHome: false)
        
        tabBarItem.badgeValue = "10"
        
        for tabbarButton in self.tabBarController!.tabBar.subviews {
//            print(tabbarButton)
            // 第一步: 先找到 tabBarbutton
            if tabbarButton.isKindOfClass(NSClassFromString("UITabBarButton")!){
                
                //第二步: 对 UITabBarbutton的子视图进行遍历,找到 _UIBadgeView
//                print(tabbarButton.subviews)
                for childBadgeView in tabbarButton.subviews {
                    
                    if childBadgeView.isKindOfClass(NSClassFromString("_UIBadgeView")!){
                        
//                        print(childBadgeView.subviews)
                        
                        // 第三步: 对 _UIBageView的subviews进行遍历
                        for childBadgeBackGround in childBadgeView.subviews {
                            
                            if childBadgeBackGround.isKindOfClass(NSClassFromString("_UIBadgeBackground")!){
                                
                                print("终于找打你了,还好,没有放弃")
                                // 我们需要对 _UIBadgeBackground 的属性进行遍历
                                
                                /*
                                1. 类
                                2. 属性的个数 count
                                */
                                var count: UInt32 = 0
                                // 1. copyIvarList
                            
                               let result = class_copyIvarList(NSClassFromString("_UIBadgeBackground"), &count)
                                
                                for i in 0..<count {
                                    
                                    // 1.拿到属性所对应的 ivar
                                    let ivar = result[Int(i)]
                                    
                                    // 2.拿到对应的属性的cName
                                   let cName = ivar_getName(ivar)
                                    
                                    // 3. 把cName 转换成 String
                                    let name = String(CString: UnsafePointer<CChar>(cName), encoding: NSUTF8StringEncoding)
                                    
                                    print(name)
                                    /*
                                     forKey 与 forKeyPath 的区别
                                    forKey就是这个类的属性
                                    forKeyPath 可以是这个类的父类的属性  用. 来表示他的路径
                                    _UIBadgeBackground._image
                                    */
                                    // 获得到 _iamge的私有属性
                                    // 注意调用对象
                                    childBadgeBackGround.setValue(UIImage(named: "main_badge"), forKey: "_image")
//                                    setValue(UIImage(named: "main_badge"), forKeyPath: "_UIBadgeBackground._UIBadgeBackground._image")
                                }
                                
                            }
                            
                        }
                        
                    }
                    
                }
                
            }
        }
        
        tabBarItem.badgeValue = nil
        
        tabBarItem.badgeValue = "111"
        
    }

    
}
